www.gusucode.com > 基于控制台的VC++ 图书管理系统-源码程序 > 基于控制台的VC++ 图书管理系统-源码程序/code/图书管理系统/Cashier.cpp
//Download by http://www.NewXing.com //*************************************************************************** // 收银模块 //*************************************************************************** #include "First.h" void Cashier(void) { fstream file; Sale book[1000],onebook; //储存书的信息以备显示帐单,查找时的临时变量 char flag; //判断是否要购买的标志 char isbnh[14],num[10]; //获取输入的ISBN号和购买数 int number,i=0,j; //计数 long post; //得到指针的位置 file.open("bookfile.dat",ios::in|ios::out|ios::binary); if(!file){ cerr<<"书库文件打开失败。\n"; exit(0); } cin.ignore(80,'\n'); cerr<<"您想购买书吗?(Y/N):"; cin>>flag; cin.ignore(80,'\n'); while((flag!='y')&&(flag!='Y')&&(flag!='n')&&(flag!='N')) { cerr<<"请输入Y/N:"; cin>>flag; cin.ignore(80,'\n'); } if ((flag=='n')||(flag=='N')) return; //不想购买,返回菜单 while((flag=='y')||(flag=='Y')) { cerr<<"请输入书的ISBN号:"; GetInt(13,13,isbnh); //在书库中寻找要销售的书 file.clear(); //清除错误的状态位 file.seekg(0L,ios::beg); file.read((char*)&onebook,sizeof(onebook)); while(!file.eof()) { if (strcmp(onebook.getISBN(),isbnh)==0) break; else file.read((char*)&onebook,sizeof(onebook)); } if( file.eof() ) { cerr<<"\n对不起,您要购买的书不存在!\n"; getch(); system("cls"); cerr<<"还想再买吗?(Y/N):"; cin>>flag; while((flag!='y')&&(flag!='Y')&&(flag!='n')&&(flag!='N')) { cerr<<"请输入Y/N:"; cin>>flag; cin.ignore(80,'\n'); } } else { book[i]=onebook; cerr<<"请输入销售书的数量:"; GetInt(10,0,num); number=atoi(num); if (book[i].getQty()-number<0) { cerr<<"没有足够的书!"; getch(); system("cls"); cerr<<"还想再买吗?(Y/N):"; cin>>flag; while((flag!='y')&&(flag!='Y')&&(flag!='n')&&(flag!='N')) { cerr<<"请输入Y/N:"; cin>>flag; cin.ignore(80,'\n'); } } else{ //设置要购买的书的信息 post=file.tellg(); //得到读指针的位置 book[i].setQtySold(number); book[i].setTax(); book[i].setSubTotal(); book[i].setTotal(); book[i].setQty(book[i].getQty()-number); file.seekp(post-sizeof(book[i]),ios::beg); file.write((char*)&book[i],sizeof(book[i])); //写入文件 i++; system("cls"); cerr<<"还想再买吗?(Y/N):"; cin>>flag; while((flag!='y')&&(flag!='Y')&&(flag!='n')&&(flag!='N')) { cerr<<"请输入Y/N:"; cin>>flag; cin.ignore(80,'\n'); } } } } //打印帐单 system("cls"); cerr<<"\t\t\t前台销售模块\n\n"; char date[30]; _strdate(date); cerr<<" 日期:"<<date<<endl;//获取系统日期 char time[30]; _strtime(time); cerr<<" 时间:"<<time<<endl;//获取系统时间 cerr<<setiosflags(ios::left)<<setw(6)<<"数量"; cerr<<setiosflags(ios::left)<<setw(15)<<"ISBN号"; cerr<<setw(25)<<"书名"; cerr<<setw(15)<<"单价"; cerr<<setw(15)<<"金额"<<endl;; for(j=0;j<i;j++) { cerr<<setiosflags(ios::left)<<setw(6)<<book[j].getQtySold(); cerr<<setiosflags(ios::left)<<setw(15)<<book[j].getISBN(); cerr<<setiosflags(ios::left)<<setw(25)<<book[j].getTitle(); cerr<<setiosflags(ios::left)<<setw(15)<<book[j].getRetail(); cerr<<setiosflags(ios::left)<<setw(15)<<book[j].getSubTotal(); cerr<<endl; } for(i=0;i<80;i++) //打印"----" cerr<<"-"; cerr<<endl; cerr.precision(2); cerr.setf(ios::fixed|ios::showpoint); cerr<<"\t\t销售合计: RMB "<<book[0].getTotal()/1.06<<endl; cerr<<"\t\t零售税: RMB "<<book[0].getTotal()/1.06*0.06<<endl; cerr<<"\t\t应付总额: RMB "<<book[0].getTotal()<<endl; cerr<<"\n\n"; cerr<<"\t\t\t谢谢光临!\n"; getch(); book[0].clearTotal(); //将总额清零 file.flush(); file.close(); }